mirror of https://github.com/wg-easy/wg-easy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
923 B
31 lines
923 B
export default defineEventHandler(async (event) => {
|
|
const system = await Database.getSystem();
|
|
if (!system)
|
|
throw createError({
|
|
statusCode: 500,
|
|
statusMessage: 'Invalid',
|
|
});
|
|
if (!system.oneTimeLinks.enabled) {
|
|
throw createError({
|
|
status: 404,
|
|
message: 'Invalid state',
|
|
});
|
|
}
|
|
// TODO: validate with zod
|
|
const clientOneTimeLink = getRouterParam(event, 'clientOneTimeLink');
|
|
const clients = await WireGuard.getClients();
|
|
const client = clients.find(
|
|
(client) => client.oneTimeLink === clientOneTimeLink
|
|
);
|
|
if (!client) return;
|
|
const clientId = client.id;
|
|
const config = await WireGuard.getClientConfiguration({ clientId });
|
|
await WireGuard.eraseOneTimeLink({ clientId });
|
|
setHeader(
|
|
event,
|
|
'Content-Disposition',
|
|
`attachment; filename="${clientOneTimeLink}.conf"`
|
|
);
|
|
setHeader(event, 'Content-Type', 'text/plain');
|
|
return config;
|
|
});
|
|
|